#include "lecturepipeline.h"

/*constructeur par default de la classe*/
lecturepipeline::lecturepipeline()
	{
		//si il n'y a pas d'arguments, on ne peut pas ouvrir de fichier, il ne se passe rien
	}

/*constructeur avec le chemain du fichier a ouvrir*/
lecturepipeline::lecturepipeline(char *chemain_fichier)
{
	if( chemain_fichier == NULL)
	{
		//si le chemain du fichier est invalide il ne se passe rien
	}

	else
	{
		this->chemain_vers_fichier = chemain_fichier;//on met le chemain du fichier a ouvrir dans une varriable propre a la classe
	}
}

/* destructeur */
lecturepipeline::~lecturepipeline()
{
	//il n'y a pas de destructeur, il faut appeler la fonction removepipeline
}


/* fonction de creation du pipeline*/
int lecturepipeline::creepipeline(result *resultat_final)
{

	this->filtre_lecture_ligne = new filtrelecture(this->chemain_vers_fichier);//creation d'un filtre filtrelecture
	this->pipelinelecture.add_filter(*(this->filtre_lecture_ligne));//ajout de ce filtre au pipeline
	this->filtre_prefixe = new filtreprefixe(resultat_final);//creation d'un filtre filtreprefixe
	this->pipelinelecture.add_filter(*(this->filtre_prefixe));//ajout de ce filtre au pipeline
	return 0;
}

/* lancement du pipeline */
int lecturepipeline::launchpipeline(char *nb_coeur)
{
	this->pipelinelecture.run(atoi(nb_coeur) );//lancement du pipeline avec 40 theard maximum  ici il faut faire une modif
	return 0;

}

/* destructeur du pipeline*/
int lecturepipeline::removepipeline()
{
	this->pipelinelecture.clear();//netoyage du pipeline
	delete this->filtre_lecture_ligne;//supression du pointeur vers le filtre de lecture
	delete this->filtre_prefixe;//supression du pointeur vers le filtre de calcul prefixe
	return 0;
}

